無料のPaaS、HerokuでPlay frameworkを使ったWebアプリケーションを動かす
Herokuとは
無料のPaaS環境といえば、Google App Engine(以下GAE)が有名ですが、GAE独自のAPIや制限があるなど、 通常のWebアプリケーションと少々勝手が違います。 自動スケールなどのメリットはあるのですが、デモ用Webアプリを外からアクセスできるようにしたいなどの ちょっとした要件には対応がし辛いところがあります。そんなとき便利なのが、今回ご紹介するHerokuです。
HerokuはアメリカのPaaSベンダーで、2011年にRubyのまつもとゆきひろ氏がチーフアーキテクトに就任したことでもニュースになりました。 このHerokuは元々Ruby(RoR)のクラウドプラットフォームでしたが、最近は対応プラットフォームをどんどん拡大し、 現在はRuby/Clojure/Python/Java/JavaScript(node.js)/Scalaに対応しています。 Herokuの特徴は以下のとおりです。
- 基本無料で使用できる(拡張機能で課金)
- Gitをつかってデプロイ
- ノンベンダーロックイン
今回はHerokuのアカウント取得からデプロイまでやってみます。 なお、今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.2
- play framework : 1.2.4
- Git : 1.7.4.4
セットアップ
まずは各種登録など。
1.Herokuでアカウント登録
まずはHerokuでアカウントを登録します。 Sign upボタンを押下してメールアドレスを入力します。 メールが送られてくるので、リンクをクリックしてパスワードを設定し、登録を完了させましょう。
2.toolbeltをインストール
Getting Started with HerokuのStep 2: Install the Heroku ToolbeltからToolbeltをダウンロードして、インストール。 インストールが完了すると、コンソールでherokuコマンドが使用できます。
3.ログインと鍵作成
ssh-keygenで鍵を生成し、heroku loginコマンドを実行します。 ※すでにssh鍵を作成している場合、heroku login時にどの鍵を使用するか選択します
%ssh-keygen -t rsa %heroku login Enter your Heroku credentials. Email: <メールアドレス> Password: <パスワード>
鍵ファイルのパーミッションは600にしておかないとおこられるので、chmod 600 <鍵ファイル>としておきましょう。 また、heroku用のkeyの名前がデフォルトでない場合、~/.ssh/configファイルに下記ような指定をしてください。
Host heroku.com User git port 22 Hostname heroku.com IdentityFile <Heroku用に作成したプライベートキーファイル> TCPKeepAlive yes IdentitiesOnly yes
4.アプリケーション作成とデプロイ
今回はplay frameworkを使用してサンプルアプリを作成しましょう。 プロジェクトを作成ます。
%play new play-heroku %cd play-heroku/
次に、Herokuにアップロードしたファイルをどのように起動するかを記述したProcfileと呼ばれるファイルを play-herokuディレクトリ直下に作成します。 このファイルはforeman(アプリケーションのプロセスマネージャ)の設定ファイルで、ここに起動スクリプトを記述します。
web: play run --http.port=$PORT $PLAY_OPTS
play-herokuディレクトリでgit initし、ステージングとコミットします。
%git init Initialized empty Git repository in /Users/play-heroku/.git/ %git add . %git commit -m "init play-heroku" [master (root-commit) 8e72a98] init play-heroku ・・・
アプリケーションの準備ができたので、Cedar Stackを作成します。
%heroku create --stack cedar Creating xxxx-yyyyy-0000... done, stack is cedar http://xxxx-yyyyy-0000.herokuapp.com/ | [email protected]:blazing-window-0000.git Git remote heroku added
xxxx-yyyyy-0000は作成したアプリケーションのサブドメイン部分になります。
ではpushして動作を確認してみましょう。
%git push heroku master ・・・・ -----> Heroku receiving push -----> Play! app detected -----> WARNING: Play! version not specified in dependencies.yml. Default version: 1.2.4 being used.... -----> Installing ivysettings.xml..... done -----> Building Play! application... -----> Launching... done, v6 http://xxxx-yyyyy-0000.herokuapp.com deployed to Heroku To [email protected]:xxxx-yyyyy-0000.git 8e72a98..3085d89 master -> master
play frameworkアプリケーションのデフォルト画面が表示されます。
まとめ
今回はHerokuでアプリケーションをデプロイして動かしてみました。 gitを使って簡単にWebアプリケーションを動かすことができたと思います。 今回作成したPlay framework(Java)以外でも基本的な流れは同じなので、お好みのプラットフォームで試してみてください。
参考サイトなど
- Heroku http://www.heroku.com/
- Facebookアプリ入門-HerokuにログインしてGitを使う- https://dev.classmethod.jp/social/facebook/facebook-heroku-open-graph/